import { createStore } from 'vuex'

export default createStore({
  state: {
    // 保存状态
    counter:1000,
  },
  mutations: {
    // 方法，更改state的唯一方式
    increment(state) {
      state.counter++
    },
    decrement(state){
      state.counter--
    },
    playyear(state){
      state.counter = state.counter*5;
      alert("我是被异步调用的函数"+state.counter)
    }

    // 使用方法
    // methods: {
    //   addition(){
    //     this.$store.commit('increment')
    //   },
    
  },
  actions: {
    // 异步操作
    getyear(context){
      return new Promise((resolve,reject) => {
        setTimeout(()=>{
          console.log('我是回调函数');
          context.commit('playyear')
          resolve();
        },2000).then

      })
    }
  },
  modules: {
    // 对不同模块
  },
  getters:{
    year(state){
      return state.counter*state.counter
    },
    newyear(state,getters){
      return getters.year/10
    }
    // 相当于计算属性，也有state参数，还可以有第二个参数getters
    // getters默认是不能用来传参数的，可以return一个函数，这样在引用这个计算属性时相当于调用函数，引用时可以传递实参 (闭包)注意计算属性和方法()区别
  }
})
